Forward error correction (FEC) is a way of reducing errors in transmission of data over unreliable and/or noisy communication channels. Optical communication systems, for example, use forward error correction to reduce transmission errors. Forward error correction involves encoding data for transmission over a communication channel by adding redundancy to the data. A forward error correction technique may involve: (1) receiving data bits for transmission over a communication channel; (2) encoding the data bits by using an error correcting code (ECC) to generate parity bits from the data bits; and (3) transmitting both the data bits and the parity bits over the communication channel. Since the parity bits are generated from the data bits, transmission of the data bits and parity bits together provides a degree of redundancy in the transmitted information, which in turn allows for recovery from errors that may occur during transmission.
Examples of error correcting codes that may be used, as part of a forward error correction technique, to generate parity bits from data bits include cyclic codes such as Bose, Hocquenghem, and Chaudhuri (BCH) codes and Reed-Solomon codes, turbo codes, product codes (e.g., square binary product codes), block or convolutional low density parity check (LDPC) codes, braided codes, and their derivatives.